# -*- coding: utf-8 -*-
from xml.etree.ElementTree import ElementTree
from os import makedirs,sep,path
from database import BancoDados
from sqlite3 import IntegrityError

PASTA_MAPAS= 'mapas'
PASTA_FOTOS = 'fotos'


class PontoTuristico:
    def __init__(self,nome,cidade,endereco,horario,local,descricao,foto,geolocalizacao=""):

        if not path.isdir(PASTA_MAPAS):
            makedirs(PASTA_MAPAS)

        self.local=local
        self.nome=nome
        self.cidade=cidade
        self.endereco=endereco
        self.horario = horario
        self.descricao = descricao
        self.geolocalizacao=geolocalizacao
        self.get_mapa('hybrid')
        self.foto=PASTA_FOTOS+sep+foto

    def get_mapa(self,maptype='roadmap'):
        URL = "http://maps.google.com/maps/api/staticmap?zoom=17&size=400x400&\
markers=color:blue|label:S|%s&sensor=false&format=jpg&maptype=%s" %(self.geolocalizacao,maptype)
        from urllib import urlopen
        
        caminho = PASTA_MAPAS+sep+'geo_'+self.nome.replace(' ','_')+'.jpg'
        
        if not path.isfile(caminho):
            arq = open(caminho,'wb')
            img = urlopen(URL).read()
            arq.write(img)
            arq.close()

        self.mapa = caminho
        
    def __tuple__(self):
        return (self.nome,self.cidade,self.endereco,self.local,self.descricao,self.horario,self.mapa,self.foto)

if __name__=='__main__':
    banco_dados = BancoDados()
    lista = ['recife.xml','olinda.xml'] # Colocar os outros se tiver
    for xml in lista:
        root = ElementTree(file=xml)
        root = root.getroot()
        children = root.getchildren()
        
        locais=[]
        for filho in children:
            for local in filho:
                atrib = local.attrib
                local = PontoTuristico(nome=local.tag.replace('_',' '),
                                                 endereco=atrib['endereco'],
                                                 horario=atrib['horario'],
                                                 descricao=unicode(atrib['descricao']),
                                                 local=atrib['local'],
                                                 foto=atrib['foto'],
                                                 cidade=root.tag,
                                                 geolocalizacao=atrib['geolocalizacao'])
                try:
                    banco_dados.inserir(local.__tuple__())
                    print '%s inserido no banco de dados'%local.nome
                except IntegrityError:
                    print "%s já existe no banco."%local.nome
                
    
    banco_dados.conexao.close()
